package com.example.softwareconfigurationcoursedesign.Admin;

import com.example.softwareconfigurationcoursedesign.LoginRegister.User;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/EditUserServlet")
public class EditUserServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");  // 设置响应内容类型为HTML，并指定字符编码为UTF-8
        System.out.println("修改会员");  // 打印信息到控制台，提示即将修改会员信息

        int userIdToEdit = Integer.parseInt(request.getParameter("id"));  // 从请求中获取要编辑的用户ID
        String name = request.getParameter("userName");  // 获取用户姓名
        String phoneNumber = request.getParameter("phoneNumber");  // 获取用户手机号
        String password = request.getParameter("password");  // 获取用户密码
        System.err.println(name+phoneNumber+password);  // 打印信息到控制台，显示用户信息

        AdminServletImplement AdminServletImplement = new AdminServlet();  // 创建AdminServletImplement对象
        User originalUser;
        try {
            originalUser = AdminServletImplement.getUserById(userIdToEdit);  // 调用AdminServletImplement对象的方法获取原始用户信息
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);  // 抛出运行时异常
        }

        if (originalUser != null) {
            if (name.isEmpty() || name.equals(originalUser.getName())) {
                name = originalUser.getName();  // 如果姓名未被修改，则保持原值
            }
            if (phoneNumber.isEmpty() || phoneNumber.equals(originalUser.getPhoneNumber())) {
                phoneNumber = originalUser.getPhoneNumber();  // 如果手机号未被修改，则保持原值
            }
            if (password.isEmpty() || password.equals(originalUser.getPassword())) {
                password = originalUser.getPassword();  // 如果密码未被修改，则保持原值
            }
            System.err.println(name+phoneNumber+password);  // 打印信息到控制台，显示更新后的用户信息
            User userToEdit = new User(userIdToEdit, phoneNumber, name, password);  // 创建新的用户对象
            AdminServletImplement.editUserInDatabase(userToEdit);  // 调用AdminServletImplement对象的方法更新数据库中的用户信息
            System.err.println(name + phoneNumber + password);  // 打印信息到控制台，显示最终更新后的用户信息
        } else {
            System.out.println("未找到用户信息");  // 打印信息到控制台，提示未找到用户信息
        }

        // 关闭窗口
        response.setContentType("text/html;charset=UTF-8");  // 重新设置响应内容类型为HTML，并指定字符编码为UTF-8

        PrintWriter out = response.getWriter();  // 获取响应输出流
        out.println("<script>setTimeout(function() { window.close(); }, 1);</script>");  // 输出JavaScript代码，1毫秒后关闭窗口
        out.close();  // 关闭输出流
        response.sendRedirect("Admin_User.jsp");  // 重定向到Admin_User.jsp页面
    }
}